CSS ์บ์ ๊ท์น๊ณผ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ํจ๊ณผ์ ์ธ ์บ์ฑ ์ ๋ต์ ๋ํ ์ข ํฉ ๊ฐ์ด๋๋ก ๋ฐ์ด๋ ์น ์ฑ๋ฅ์ ๋ฌ์ฑํ์ธ์.
CSS ์บ์ ๊ท์น ๋ง์คํฐํ๊ธฐ: ์น ์ฑ๋ฅ์ ์ํ ๊ธ๋ก๋ฒ ์ ๋ต
์ค๋๋ ์ํธ ์ฐ๊ฒฐ๋ ๋์งํธ ํ๊ฒฝ์์ ๋งค์ฐ ๋น ๋ฅด๊ณ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ์น์ฌ์ดํธ ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ต์ ํ๋ ๋จ์ํ ์ฌ์น๊ฐ ์๋๋ผ ํ์์ ๋๋ค. ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ๊ฐ๋ฐ์์ ๋ฌด๊ธฐ๊ณ ์์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋๊ตฌ ์ค ํ๋๋ ํจ๊ณผ์ ์ธ CSS ์บ์ฑ์ ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋๋ CSS ์บ์ ๊ท์น์ ๋ณต์ก์ฑ์ ์์ธํ ์ดํด๋ณด๊ณ , ๋ค์ํ ์บ์ฑ ์ ๋ต์ ํ์ํ๋ฉฐ, ๋ค์ํ ์ง์ญ์์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๊ธฐ ์ํ ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์บ์ฑ์ ๊ธฐ๋ณธ ์ดํด
CSS ๊ด๋ จ ์บ์ฑ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ธ๋ผ์ฐ์ ์บ์ฑ์ ํต์ฌ ์๋ฆฌ๋ฅผ ํ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ HTML ํ์ผ, JavaScript, ์ด๋ฏธ์ง, ๊ทธ๋ฆฌ๊ณ ์ค์ํ Cascading Style Sheets(CSS) ํ์ผ์ ํฌํจํ ๋ค์ํ ์์ฐ์ ๋ค์ด๋ก๋ํฉ๋๋ค. ์บ์ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฌํ ๋ค์ด๋ก๋๋ ์์ฐ์ ์ฌ์ฉ์ ์ฅ์น์ ๋ก์ปฌ๋ก ์ ์ฅํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ๋ค์์ ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํ๊ฑฐ๋ ๋์ผํ ์์ฐ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ ๋ ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์์ ๋ค์ ๋ค์ด๋ก๋ํ๋ ๋์ ๋ก์ปฌ ์บ์์์ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ก๋ ์๊ฐ์ด ํฌ๊ฒ ์ค์ด๋ค๊ณ ๋์ญํญ์ด ์ ์ฝ๋๋ฉฐ ์๋ฒ ๋ถ๋ด์ด ์ํ๋ฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์บ์ฑ์ ํจ๊ณผ๋ ์๋ฒ๊ฐ ์บ์ฑ ์ง์นจ์ ๋ธ๋ผ์ฐ์ ์ ์ผ๋ง๋ ์ ์ ๋ฌํ๋์ง์ ๋ฌ๋ ค ์์ต๋๋ค. ์ด ํต์ ์ ์ฃผ๋ก HTTP ํค๋๋ฅผ ํตํด ์ฒ๋ฆฌ๋ฉ๋๋ค. CSS ํ์ผ์ ๋ํด ์ด๋ฌํ ํค๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ผ์ ์บ์ํ๊ณ ์ฌ๊ฒ์ฆํด์ผ ํ๋ ์๊ธฐ์ ๋ฐฉ๋ฒ์ ์ ํํ๊ฒ ์ง์ ํ ์ ์์ต๋๋ค.
CSS ์บ์ฑ์ ์ํ ์ฃผ์ HTTP ํค๋
๋ช ๊ฐ์ง HTTP ํค๋๋ CSS ํ์ผ์ด ์บ์๋๋ ๋ฐฉ์์ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๊ฐ๋ ฅํ ์บ์ฑ ์ ๋ต์ ์๋ฆฝํ๋ ค๋ฉด ์ด๋ฌํ ๊ฐ ํค๋๋ฅผ ์ดํดํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
1. Cache-Control
Cache-Control ํค๋๋ ์บ์ ๋์์ ์ ์ดํ๊ธฐ ์ํ ๊ฐ์ฅ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ์ง์์ด์
๋๋ค. ๋ธ๋ผ์ฐ์ ์บ์์ ๋ชจ๋ ์ค๊ฐ ์บ์(์ฝํ
์ธ ์ ์ก ๋คํธ์ํฌ ๋๋ CDN๊ณผ ๊ฐ์)์ ์ ์ฉ๋๋ ์ง์์ด๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
public: ์๋ต์ด ๋ธ๋ผ์ฐ์ ์บ์ ๋ฐ ๊ณต์ ์บ์(CDN๊ณผ ๊ฐ์)๋ฅผ ํฌํจํ ๋ชจ๋ ์บ์์ ์ํด ์บ์๋ ์ ์์์ ๋ํ๋ ๋๋ค.private: ์๋ต์ด ๋จ์ผ ์ฌ์ฉ์๋ฅผ ์ํ ๊ฒ์ด๋ฉฐ ๊ณต์ ์บ์์ ์ ์ฅํด์๋ ์ ๋จ์ ๋ํ๋ ๋๋ค. ๋ธ๋ผ์ฐ์ ์บ์๋ ์ฌ์ ํ ์ ์ฅํ ์ ์์ต๋๋ค.no-cache: ์ด ์ง์์ด๋ ๋ฆฌ์์ค๊ฐ ์บ์๋์ง ์์์ ์๋ฏธํ์ง ์์ต๋๋ค. ๋์ ์บ์๊ฐ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์๋ณธ ์๋ฒ์์ ์ฌ๊ฒ์ฆํ๋๋ก ๊ฐ์ ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ฌ์ ํ ๋ฆฌ์์ค๋ฅผ ์ ์ฅํ์ง๋ง ์ฌ์ ํ ์ต์ ์ธ์ง ํ์ธํ๊ธฐ ์ํด ์๋ฒ์ ์กฐ๊ฑด๋ถ ์์ฒญ์ ๋ณด๋ ๋๋ค.no-store: ์ด๊ฒ์ ๊ฐ์ฅ ์๊ฒฉํ ์ง์์ด์ ๋๋ค. ์บ์์ ์๋ต์ ์ ํ ์ ์ฅํ์ง ์๋๋ก ์ง์ํฉ๋๋ค. ๋งค์ฐ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์๋ง ์ฌ์ฉํ์ญ์์ค.max-age=: ๋ฆฌ์์ค๊ฐ ์ต์ ์ผ๋ก ๊ฐ์ฃผ๋๋ ์ต๋ ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ดmax-age=31536000์ ๋ฆฌ์์ค๋ฅผ 1๋ ๋์ ์บ์ํฉ๋๋ค.s-maxage=:max-age์ ์ ์ฌํ์ง๋ง ํนํ ๊ณต์ ์บ์(CDN๊ณผ ๊ฐ์)์ ์ ์ฉ๋ฉ๋๋ค.must-revalidate: ๋ฆฌ์์ค๊ฐ ์ค๋๋๋ฉด(max-age๊ฐ ๋ง๋ฃ๋จ) ์บ์๋ ์๋ณธ ์๋ฒ์์ ๋ฐ๋์ ์ฌ๊ฒ์ฆํด์ผ ํฉ๋๋ค. ์๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์บ์๋ ์ค๋๋ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ๋์ ์ค๋ฅ๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.proxy-revalidate:must-revalidate์ ์ ์ฌํ์ง๋ง ๊ณต์ ์บ์์๋ง ์ ์ฉ๋ฉ๋๋ค.
์: Cache-Control: public, max-age=31536000, must-revalidate
2. Expires
Expires ํค๋๋ ์๋ต์ด ์ค๋๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ ํน์ ๋ ์ง์ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ ํ ์ง์๋์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ ์ ์ฐํ๊ณ ๋ ์ธ๋ฐํ ์ ์ด๋ฅผ ์ ๊ณตํ๋ฏ๋ก max-age์ ํจ๊ป Cache-Control์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์: Expires: Wed, 21 Oct 2025 07:28:00 GMT
์ฐธ๊ณ : Cache-Control: max-age์ Expires๊ฐ ๋ชจ๋ ์๋ ๊ฒฝ์ฐ Cache-Control์ด ์ฐ์ ํฉ๋๋ค.
3. ETag (Entity Tag)
ETag๋ ์น ์๋ฒ๊ฐ ๋ฆฌ์์ค์ ํน์ ๋ฒ์ ์ ํ ๋นํ ์๋ณ์์
๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ค์ ์์ฒญํ๋ฉด If-None-Match ์์ฒญ ํค๋์์ ETag๋ฅผ ๋ณด๋
๋๋ค. ์๋ฒ์ ETag๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ ๊ณตํ ๊ฒ๊ณผ ์ผ์นํ๋ฉด ์๋ฒ๋ 304 Not Modified ์ํ ์ฝ๋๋ก ์๋ตํ๊ณ ๋ธ๋ผ์ฐ์ ๋ ์บ์๋ ๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฒด ํ์ผ์ ๋ค์ ์ ์กํ์ง ์๊ณ ๋ฆฌ์์ค๋ฅผ ์ฌ๊ฒ์ฆํ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค.
์๋ฒ ์๋ต ํค๋: ETag: "5f3a72b1-18d8"
๋ธ๋ผ์ฐ์ ์์ฒญ ํค๋: If-None-Match: "5f3a72b1-18d8"
4. Last-Modified
Last-Modified ํค๋๋ ๋ฆฌ์์ค๊ฐ ๋ง์ง๋ง์ผ๋ก ์์ ๋ ๋ ์ง์ ์๊ฐ์ ๋ํ๋
๋๋ค. ETag์ ์ ์ฌํ๊ฒ ๋ธ๋ผ์ฐ์ ๋ ์ด ๋ ์ง๋ฅผ If-Modified-Since ์์ฒญ ํค๋๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ํด๋น ๋ ์ง ์ดํ๋ก ๋ฆฌ์์ค๊ฐ ์์ ๋์ง ์์ ๊ฒฝ์ฐ ์๋ฒ๋ 304 Not Modified ์ํ ์ฝ๋๋ก ์๋ตํฉ๋๋ค.
์๋ฒ ์๋ต ํค๋: Last-Modified: Tue, 15 Nov 2022 12:45:26 GMT
๋ธ๋ผ์ฐ์ ์์ฒญ ํค๋: If-Modified-Since: Tue, 15 Nov 2022 12:45:26 GMT
์ฐธ๊ณ : ETag๋ ๋ ์ธ๋ถํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฒ๋ฆฌํ๊ณ ์๋ฒ ์๊ณ ๋๊ธฐํ๊ฐ ๋ค๋ฅธ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก Last-Modified๋ณด๋ค ์ ํธ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ์๋ฒ๋ Last-Modified๋ง ์ง์ํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ CSS ์บ์ฑ ์ ๋ต ๊ฐ๋ฐ
์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ฑ๊ณต์ ์ธ ์บ์ฑ ์ ๋ต์ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด, ์ฌ์ฉ์ ํ๋ ๋ฐ CSS ์ฝํ ์ธ ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ณ ๋ คํ๋ ๋ฏธ๋ฌํ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค.
1. ์ ์ CSS ์์ฐ์ ๋ํ ์ฅ๊ธฐ ์บ์ฑ
๊ฑฐ์ ๋ณ๊ฒฝ๋์ง ์๋ CSS ํ์ผ์ ๊ฒฝ์ฐ ์ฅ๊ธฐ ์บ์ฑ์ ๊ตฌํํ๋ ๊ฒ์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ฆ, ์ด๋ฌํ ์์ฐ์ ๋ํด ๋๋ํ max-age(์: 1๋
)๋ฅผ ์ค์ ํฉ๋๋ค.
์ฌ์ฉ ์๊ธฐ:
- ์น์ฌ์ดํธ์ ๊ธฐ๋ณธ ๋ชจ์๊ณผ ๋๋์ ์ ์ํ๋ ํต์ฌ ์คํ์ผ์ํธ์ ๋๋ค.
- ์์ฃผ ์ ๋ฐ์ดํธ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ ํ๋ ์์ํฌ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ CSS ํ์ผ์ ๋๋ค.
๊ตฌํ ๋ฐฉ๋ฒ:
์ฅ๊ธฐ ์บ์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ค๋ฉด CSS ํ์ผ์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํ์ผ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ด ๊ธฐ์ ์ ์บ์ ๋ฒ์คํ ์ด๋ผ๊ณ ํฉ๋๋ค.
- ๋ฒ์ ์ด ์ง์ ๋ ํ์ผ ์ด๋ฆ: CSS ํ์ผ ์ด๋ฆ์ ๋ฒ์ ๋ฒํธ ๋๋ ํด์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด
style.css๋์style-v1.2.css๋๋style-a3b4c5d6.css๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. CSS๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ์ ํ์ผ ์ด๋ฆ์ด ์์ฑ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ์ผ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ธ๋ผ์ฐ์ ๊ฐ ํญ์ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ค๊ณ , ์ ๋ฐ์ดํธ๋ ํ์ผ ์ด๋ฆ์ ์์ง ๋ฐ์ง ๋ชปํ ์ฌ์ฉ์๋ ์ด์ ๋ฒ์ ์ด ์บ์๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. - ๋น๋ ๋๊ตฌ: ๋๋ถ๋ถ์ ์ต์ ํ๋ฐํธ์๋ ๋น๋ ๋๊ตฌ(์: Webpack, Rollup, Parcel)์๋ ํ์ผ ์ฝํ ์ธ ํด์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฒ์ ์ด ์ง์ ๋ ํ์ผ ์ด๋ฆ์ ์๋์ผ๋ก ์์ฑํ์ฌ ์บ์ ๋ฒ์คํ ์ ์ํ ๋ด์ฅ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ ์ CSS์ ๋ํ ์์ ํค๋:
Cache-Control: public, max-age=31536000, immutable
ETag: "unique-hash-of-file-content"
immutable ์ง์์ด(Cache-Control์ ์๋ก ์ถ๊ฐ๋จ)๋ ๋ฆฌ์์ค๊ฐ ์ ๋ ๋ณ๊ฒฝ๋์ง ์์์ ์๋ฆฝ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค์ํ๋ ๋ธ๋ผ์ฐ์ ์์ ์กฐ๊ฑด๋ถ ์์ฒญ์ด ์ ์ก๋๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ์ฑ๋ฅ์ ๋์ฑ ์ต์ ํํ ์ ์์ต๋๋ค.
2. ์์ฃผ ์ ๋ฐ์ดํธ๋๋ CSS์ ๋ํ ๋จ๊ธฐ ์บ์ฑ ๋๋ ์ฌ๊ฒ์ฆ
CSS๊ฐ ๋ ์์ฃผ ๋ณ๊ฒฝ๋ ์ ์๊ฑฐ๋ ์ ๋ฐ์ดํธ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ์ ์ดํด์ผ ํ๋ ์ํฉ์์๋ ๋ ์งง์ ์บ์ฑ ๊ธฐ๊ฐ์ ์ ํํ๊ฑฐ๋ ์ฌ๊ฒ์ฆ ๋ฉ์ปค๋์ฆ์ ์์กดํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์๊ธฐ:
- ์ฆ์ ์ฝํ ์ธ ๋ณ๊ฒฝ ๋๋ A/B ํ ์คํธ์ ์ผ๋ถ๋ก ์ ๋ฐ์ดํธ๋๋ CSS ํ์ผ์ ๋๋ค.
- ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๋ ์ฌ์ฉ์ ์ง์ ๊ธฐ๋ณธ ์ค์ ์ ์ฐ๊ฒฐ๋ ์คํ์ผ์ํธ์ ๋๋ค.
๊ตฌํ ๋ฐฉ๋ฒ:
ETag๋๋Last-Modified๊ฐ ์๋no-cache: ์ด๊ฒ์ ๊ฐ๋ ฅํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ CSS๋ฅผ ์บ์ํ์ง๋ง ์ ๋ฐ์ดํธ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ๋งค๋ฒ ์๋ฒ์ ํ์ธํด์ผ ํฉ๋๋ค. ์๋ ๊ฒฝ์ฐ ์๋ฒ๋ ์ ํ์ผ์ ๋ณด๋ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด304 Not Modified๋ฅผ ๋ณด๋ ๋๋ค.- ๋ ์งง์
max-age:must-revalidate์ ํจ๊ป ๋ ์งง์max-age(์: ๋ช ์๊ฐ ๋๋ ๋ฉฐ์น )๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์งง์ ์๊ฐ ๋์ ์บ์๋ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ง๋ง ๊ทธ ํ์๋ ํญ์ ์ฌ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
์์ฃผ ์ ๋ฐ์ดํธ๋๋ CSS์ ๋ํ ์์ ํค๋:
Cache-Control: public, max-age=3600, must-revalidate
ETag: "version-identifier-for-this-update"
3. ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN) ํ์ฉ
์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด CDN์ ํ์ ๋ถ๊ฐ๊ฒฐํฉ๋๋ค. CDN์ ์ฌ์ฉ์์ ์ง๋ฆฌ์ ์ผ๋ก ๋ ๊ฐ๊น์ด ์์น์์ ์น์ฌ์ดํธ์ ์ ์ ์์ฐ(CSS ํฌํจ)์ ์บ์ํ๋ ๋ถ์ฐ ์๋ฒ ๋คํธ์ํฌ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๊ธฐ ์๊ฐ์ด ํฌ๊ฒ ์ค์ด๋ญ๋๋ค.
CDN์ด CSS ์บ์ฑ๊ณผ ํจ๊ป ์๋ํ๋ ๋ฐฉ์:
- ์์ง ์บ์ฑ: CDN์ CSS ํ์ผ์ ์ ์ธ๊ณ ์์ง ์๋ฒ์ ์บ์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ CSS๋ฅผ ์์ฒญํ๋ฉด ๊ฐ์ฅ ๊ฐ๊น์ด ์์ง ์๋ฒ์์ ์ ๊ณต๋์ด ์ ์ก ์๋๊ฐ ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
- CDN ์บ์ ์ ์ด: CDN์ ์ข
์ข
์๋ณธ ์๋ฒ์์ ๋ณด๋ธ
Cache-Controlํค๋๋ฅผ ์กด์คํ๊ฑฐ๋ ๋ณด๊ฐํฉ๋๋ค. CDN ๊ณต๊ธ์์ ์ค์ ๋ด์์ ์ง์ ์บ์ฑ ๊ท์น์ ๊ตฌ์ฑํ ์๋ ์์ผ๋ฉฐ, ์บ์ ๊ธฐ๊ฐ ๋ฐ ๋ฌดํจํ ์ ์ฑ ์ ๋ํด ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. - ์บ์ ๋ฌดํจํ: CSS๋ฅผ ์ ๋ฐ์ดํธํ ๋ CDN์์ ์บ์๋ ๋ฒ์ ์ ๋ฌดํจํํด์ผ ํฉ๋๋ค. ๋๋ถ๋ถ์ CDN ๊ณต๊ธ์๋ ์บ์๋ ํ์ผ ๋๋ ํน์ ์์ฐ์ ์ ์ญ์ ์ผ๋ก ์ ๊ฑฐํ๊ธฐ ์ํ API ๋๋ ๋์๋ณด๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๊ฒ์ ์ ๋ฐ์ดํธ ํ ์ฌ์ฉ์๊ฐ ์ต์ ์คํ์ผ์ ์ฆ์ ๋ฐ์ ์ ์๋๋ก ํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
CDN์ ๋ชจ๋ฒ ์ฌ๋ก:
- CDN์ด CSS ํ์ผ์ ์ ์ ํ๊ฒ ์บ์ํ๋๋ก ๊ตฌ์ฑ๋์๋์ง ํ์ธํฉ๋๋ค(์ข
์ข
๊ธด
max-age์ง์์ด์ ์บ์ ๋ฒ์คํ ํ์ผ ์ด๋ฆ ์ฌ์ฉ). - CDN์ ์บ์ ๋ฌดํจํ ํ๋ก์ธ์ค๋ฅผ ์ดํดํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐฐํฌํ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
Cache-Controlํค๋์์s-maxage๋ฅผ ์ฌ์ฉํ์ฌ CDN์ด ์์ฐ์ ์บ์ํ๋ ๋ฐฉ์์ ๊ตฌ์ฒด์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค.
4. CSS ์ ์ก ์ต์ ํ
์บ์ฑ ๊ท์น ์ธ์๋ ๋ค๋ฅธ ์ต์ ํ๋ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ CSS ์ ์ก์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ต์ํ: CSS ํ์ผ์์ ๋ถํ์ํ ๋ฌธ์(๊ณต๋ฐฑ, ์ฃผ์)๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ์ผ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค์ด ๋ค์ด๋ก๋ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ ์บ์ฑ ํจ์จ์ฑ์ด ํฅ์๋ฉ๋๋ค.
- ์์ถ(Gzip/Brotli): CSS ํ์ผ์ ๋ํด ์๋ฒ ์ธก ์์ถ(Gzip ๋๋ Brotli์ ๊ฐ์)์ ํ์ฑํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋คํธ์ํฌ๋ฅผ ํตํด ๋ณด๋ด๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์์ถํ์ฌ ์ ์ก ์๊ฐ์ ๋์ฑ ์ค์ผ ์ ์์ต๋๋ค. ์๋ฒ์ CDN์ด ์ด๋ฌํ ์์ถ ๋ฐฉ๋ฒ์ ์ง์ํ๊ณ ๊ตฌ์ฑ๋์๋์ง ํ์ธํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์๋์ผ๋ก ์์ถ์ ํด์ ํฉ๋๋ค.
- ์ค์ CSS: ํ์ด์ง์ ์๋ถ๋ถ ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ํ์ํ CSS๋ฅผ ์๋ณํ๊ณ HTML์ ์ง์ ์ธ๋ผ์ธํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์ธ๋ถ CSS ํ์ผ์ด ์์ ํ ๋ค์ด๋ก๋๋๊ธฐ ์ ์๋ ํ์ด์ง์ ๋ณด์ด๋ ๋ถ๋ถ์ ์ฆ์ ๋ ๋๋งํ๊ธฐ ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋๋จธ์ง CSS๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ถํ : ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ๊ฒฝ๋ก ๋๋ ๊ตฌ์ฑ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก CSS๋ฅผ ๋ ์์ ์ฒญํฌ๋ก ๋ถํ ํ๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์๊ฐ ๋ณด๊ณ ์๋ ํน์ ํ์ด์ง์ ํ์ํ CSS๋ง ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
์บ์ฑ ์ ๋ต ํ ์คํธ ๋ฐ ๋ชจ๋ํฐ๋ง
์บ์ฑ ์ ๋ต์ ๊ตฌํํ๋ ๊ฒ์ ์ ํฌ์ ์ ๋ฐ์ ๋ถ๊ณผํฉ๋๋ค. ์ง์์ ์ธ ํ ์คํธ์ ๋ชจ๋ํฐ๋ง์ ์๋ํ ๋๋ก ์๋ํ๋์ง ํ์ธํ๊ณ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ: ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ(Chrome, Firefox, Edge ๋ฑ์์ ์ฌ์ฉ ๊ฐ๋ฅ)์ ๋คํธ์ํฌ ํญ์ ์ฌ์ฉํ์ฌ CSS ํ์ผ์ ๋ํ HTTP ํค๋๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
Cache-Control,Expires,ETag๋ฐLast-Modifiedํค๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค. ๋ฆฌ์์ค๊ฐ ์บ์์์ ์ ๊ณต๋๋์ง(์ํ ์ฝ๋200 OK (from disk cache)๋๋304 Not Modified) ํ์ธํ ์๋ ์์ต๋๋ค. - ์จ๋ผ์ธ ์ฑ๋ฅ ํ ์คํธ ๋๊ตฌ: Google PageSpeed Insights, GTmetrix ๋ฐ WebPageTest์ ๊ฐ์ ๋๊ตฌ๋ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ์บ์ฑ๊ณผ ๊ด๋ จํ์ฌ ํน์ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ค์ํ ์ง๋ฆฌ์ ์์น์์ ์์ฒญ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ๊ฒฝํํ๋ ๋ฐฉ์์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง(RUM): RUM ๋๊ตฌ๋ฅผ ๊ตฌํํ์ฌ ์น์ฌ์ดํธ์ ์ํธ ์์ฉํ๋ ์ค์ ์ฌ์ฉ์๋ก๋ถํฐ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค. ์ด๊ฒ์ ๋ค์ํ ์ฅ์น, ๋คํธ์ํฌ ๋ฐ ์์น์์ ์บ์ฑ ์ ๋ต์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํ ๊ฐ์ฅ ์ ํํ ๊ทธ๋ฆผ์ ์ ๊ณตํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ํจ์ ๋ฐ ํผํ๋ ๋ฐฉ๋ฒ
CSS ์บ์ฑ์ ์๋นํ ์ด์ ์ ์ ๊ณตํ์ง๋ง ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ํจ์ ์ด ํจ๊ณผ๋ฅผ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค.
- ์ง๋์น๊ฒ ๊ณต๊ฒฉ์ ์ธ ์บ์ฑ: ์ ์ ํ ์บ์ ๋ฒ์คํ ๋ฉ์ปค๋์ฆ ์์ด CSS ํ์ผ์ ๋๋ฌด ์ค๋ซ๋์ ์บ์ฑํ๋ฉด ์ ๋ฐ์ดํธ ํ ์ฌ์ฉ์๊ฐ ์ค๋๋ ์คํ์ผ์ ๋ณด๊ฒ ๋ ์ ์์ต๋๋ค.
- ์๋ชป๋ HTTP ํค๋:
Cache-Control๊ณผ ๊ฐ์ ํค๋๋ฅผ ์๋ชป ๊ตฌ์ฑํ๋ฉด ์์ธกํ ์ ์๋ ์บ์ฑ ๋์์ด ๋ฐ์ํ๊ฑฐ๋ ์บ์ฑ์ด ์์ ํ ๋ฐฉ์ง๋ ์ ์์ต๋๋ค. - CDN ์บ์ฑ ๋ฌด์: CDN์ ํ์ฉํ์ง ์๊ณ ๋ธ๋ผ์ฐ์ ์บ์ฑ์๋ง ์์กดํ๋ฉด ์๋ณธ ์๋ฒ์์ ์ง๋ฆฌ์ ์ผ๋ก ๋ฉ๋ฆฌ ๋จ์ด์ง ์ฌ์ฉ์์ ๋๊ธฐ ์๊ฐ์ด ๋์ด๋ฉ๋๋ค.
- ์บ์ ๋ฌดํจํ ์ ๋ต ๋ถ์กฑ: ์ ๋ฐ์ดํธ ํ CDN ์บ์๋ฅผ ์ ์ ํ๊ฒ ๋ฌดํจํํ์ง ๋ชปํ๋ฉด ์ฌ์ฉ์๊ฐ ๊ณ์ ์ค๋๋ ๋ฒ์ ์ ๋ฐ์ ์ ์์ต๋๋ค.
no-cache๋no-store๊ณ ๋ คํ์ง ์์: ์ด ๋ ์ง์์ด๋ฅผ ํผ๋ํ๋ฉด ์ฑ๋ฅ ๋ฌธ์ ๋๋ ๋ณด์ ์ทจ์ฝ์ฑ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.no-cache๋ ์บ์ฑ์ ํ์ฉํ์ง๋ง ์ฌ๊ฒ์ฆ์ด ํ์ํ๊ณno-store๋ ์บ์ฑ์ ์์ ํ ๊ธ์งํฉ๋๋ค.
๊ฒฐ๋ก
CSS ์บ์ ๊ท์น์ ๋ง์คํฐํ๊ณ ์ ๊ณ ์๋ ์บ์ฑ ์ ๋ต์ ๊ตฌํํ๋ ๊ฒ์ ํนํ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋ฐ์ด๋ ์น ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ์์ด ์ด์์
๋๋ค. Cache-Control, ETag ๋ฐ Last-Modified์ ๊ฐ์ HTTP ํค๋๋ฅผ ์ ์คํ๊ฒ ์ฌ์ฉํ๊ณ ํจ๊ณผ์ ์ธ ์บ์ ๋ฒ์คํ
๊ธฐ์ ๊ณผ CDN์ ์ฑ๋ฅ์ ๊ฒฐํฉํ๋ฉด ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ์ค์ด๊ณ ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ๋์ด๋ฉฐ ์น์ฌ์ดํธ์ ์ ๋ฐ์ ์ธ ํจ์จ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์น ์ฑ๋ฅ์ ์ง์์ ์ธ ๋ ธ๋ ฅ์์ ๊ธฐ์ตํ์ญ์์ค. ์บ์ฑ ์ ๋ต์ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ๊ณ ํจ๊ณผ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ฉฐ ์งํํ๋ ๋ชจ๋ฒ ์ฌ๋ก์ ์ ์ํ์ฌ ์น์ฌ์ดํธ๊ฐ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ๋ฐ์์ฑ์ด ์ ์ง๋๋๋ก ํ์ญ์์ค. ์ด๋ฌํ ์ ๋ต์ ๊ตฌํํ๋ฉด ์ฌ์ฉ์์๊ฒ ๋์์ด ๋ ๋ฟ๋ง ์๋๋ผ ์ฌ์ดํธ์ ๊ฒ์ ์์ง ์์ ๋ฐ ์ ํ์จ์๋ ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.